package cn.jiaqiang.chatgpt.data.config;

import com.github.houbb.sensitive.word.bs.SensitiveWordBs;
import com.github.houbb.sensitive.word.utils.InnerWordCharUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @description 敏感词配置
 */
@Slf4j
@Configuration
public class SensitiveWordConfig {

    @Bean
    public SensitiveWordBs sensitiveWordBs() {
        return SensitiveWordBs.newInstance()
                // wordReplace方法：当检测到敏感词时，可以指定替换为*或其他字符。
                .wordReplace((stringBuilder, chars, wordResult, iWordContext) -> {
                    String sensitiveWord = InnerWordCharUtils.getString(chars, wordResult);
                    log.info("检测到敏感词: {}", sensitiveWord);
                    System.out.println("1258/748=-0oijuhyvg fvgbhunjmk,l;");
                    /* 替换操作，你可以指定的替换为*或者其他
                    else {
                        int wordLength = wordResult.endIndex() - wordResult.startIndex();
                        for (int i = 0; i < wordLength; i++) {
                            stringBuilder.append("");
                        }
                    }*/
                })
                // ignoreCase：忽略大小写。
                .ignoreCase(true)
                // ignoreWidth：忽略全角半角。
                .ignoreWidth(true)
                // ignoreNumStyle：忽略数字样式。
                .ignoreNumStyle(true)
                // ignoreChineseStyle：忽略中文样式。
                .ignoreChineseStyle(true)
                // ignoreChineseStyle：忽略英文样式。
                .ignoreEnglishStyle(true)
                // ignoreRepeat：忽略重复。
                .ignoreRepeat(false)
                // enableNumCheck：启用数字检测。
                .enableNumCheck(true)
                // enableEmailCheck：启用邮箱检测
                .enableEmailCheck(true)
                // enableUrlCheck：启用URL检测。
                .enableUrlCheck(true)
                // enableWordCheck：启用单词检测。
                .enableWordCheck(true)
                // numCheckLen：数字检测长度。
                .numCheckLen(1024)
                .init();
    }

}
